iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
自我挑戰組

從0到有學習JavaScript系列 第 16

第三章 型別、值和變數-問題筆記 RegExp exec()

  • 分享至 

  • xImage
  •  

問題一、RegExp輸出的方式有哪些?

  1. 在正規表達式(RegExp)中,pattern常常和 exec() 和test()方法連用。
  2. 在字串(String)中,常常和match(), matchAll(), replace(), replaceAll(), search(), split()連用。

前一天有講到test()的輸出方式,今天我們就來看看其他的方式吧!

  • exec()
const regex1 = RegExp('foo*', 'g');
const str1 = 'table football, foosball';
let array1;

while ((array1 = regex1.exec(str1)) !== null) {
  console.log(`Found ${array1[0]}. Next starts at ${regex1.lastIndex}.`);
  // Expected output: "Found foo. Next starts at 9."
  // Expected output: "Found foo. Next starts at 19."
}

  1. RegExp('foo*', 'g'); 為正規表達式的構造函數(Constructor),公式為RegExp ( pattern, flags)。
  2. RegExp('foo*', 'g'); 中 'foo*' 的*符號為正規表達式,代表o字母可以出現零次獲多次。
  3. RegExp('foo*', 'g'); 中 'g' 的為flags,意思為global,意思是不僅匹配到第一個符合的條件,而是全部 (不管順序) 有符合的條件都匹配到。
  4. exec()是用來尋找匹配的字串且回傳結果的陣列 array,若無匹配則回傳null
  5. 變數 array1,用於存儲每次匹配後的結果。
  6. {array[0]} 代表 解析出來的匹配完整值。
  7. lastIndex在exec() 中,會將符合條件的最後一個字母 ( the position of the end of the matched) 的順序回傳。
  8. 匹配RegExp('foo*', 'g'); "foo" 在str1中為9和19這兩個位置。

Reference
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match


上一篇
第三章 型別、值和變數-問題筆記 RegExp part2
下一篇
第三章 型別、值和變數-問題筆記 RegExp match()及跳脫字元
系列文
從0到有學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言